昨天我們在 GitLab 上產出了足夠的假資料了,今天就正式進入 GitLab Performance Tool,用它來測試我們的 GitLab Server 效能。
延續昨天,首先我們要準備另一個 .json,即是 K6 這個 Load testing 工具的 Config,用這個檔案控制你要測試多久、模擬多少 RPS(Requests Per Second),因此你可以根據你預期的 GitLab 使用者數量與使用量來調整這個檔案,來測試你的 GitLab Server 是否有辦法支撐。
下面這個檔案有幾個重點,首先是 stages,它用來控制你要模擬多少位使用者,以及使用者會持續發出 Request 多久時間;以下面的範例即是,在最初的 5 秒增加到 10 位使用者,接著 10 秒繼續維持 10 位使用者,接著在 5 秒內減少至 5 位使用者,最後的 5 秒減少到 0 位使用者。
第二個重點是 rps,就是控制每秒要發出多少 Requests。
{
"stages": [
{ "duration": "5s", "target": 10 },
{ "duration": "10s", "target": 10 },
{ "duration": "5s", "target": 5 },
{ "duration": "5s", "target": 0 }
],
"rps": 10,
"max_vus": 1000,
"batchPerHost": 0
}
如果不知道要怎麼設定,那原廠也已經準備好了數個情境,你可以直接拿來使用。
再次拿出昨天我們為了執行 GPT Data Generator 所準備的資料夾與檔案,但要增加更多資料夾。
- gpt #資料夾
|_ config #資料夾
| |_ environments #資料夾
| | |_ 昨天的.json
| |_ options #資料夾
| |_ 今天新增 k6 的 .json
|_ results #資料夾
執行測試
再次感謝原廠,已經做好 docker image 可以直接使用,因此你只要在有 docker 的環境執行下面的指令即可。
如下範例,記得要將你準備好的資料夾用 -v 同步給 container 使用。
docker run -it \
-e ACCESS_TOKEN=你的_Access_token \
-v /gpt/config:/config \
-v /gpt/results:/results \
gitlab/gitlab-performance-tool \
--environment 昨天的.json \
--options 今天新增k6的.json
等待測試執行完畢,因為測試的項目有點多,因此這個測試也是要跑一段時間,你可以再去喝第二杯咖啡再回來察看成果。
與昨天相同,放幾張擷圖讓大家感受一下。
開始執行測試,立刻就出現 K6 的圖案啦!然後就會一一執行測試。
每執行一段,就會有一些小結。
總共跑了 2473 秒,大約 41 分鐘才跑完。
最後也會有一個簡單的 Summary。
會條列出每一項測試,哪一些有通過,哪些沒通過。
測試過程與結果也會輸出為檔案,可供事後查閱。
雖然今天介紹的 GitLab Performance Tool 背後也是使用 K6(看來 K6 真的是紅了),但 GitLab 原廠有再包了一層,要打哪些 API 與頁面都幫你規劃好了,因此可以很容易的拿來直接對自架的 GitLab Server 做 Load testing。(啊,如果你的 GitLab 是架設在雲端,要做測試前記得先通知一下你的雲端供應商,免得你被判定是在實施 DDoS 攻擊。)
這兩天介紹的 GPT Data Generator 與 GitLab Performance Tool 都還有更多參數可以設定,像是你可以選擇用自己準備的 project 來取代原廠準備的 Large Project 當作假資料,也可以增加要測試的內容,因此在使用上還有更多的彈性與客製化空間,這些就留給大家自行研究了。

圖片來源 - 吉卜力工作室 https://www.ghibli.jp/works/tanuki/#&gid=1&pid=3